package com.yvon.service.demo.mybatis.transaction;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * 事务
 * 定义标准的事务接口，链接、提交、回滚、关闭，具体可以由不同的事务方式进行实现，包括：JDBC和托管事务，托管事务是交给 Spring 这样的容器来管理。
 *
 * @author yvon
 * @since 2023-03-24
 */
public interface Transaction {

    /**
     * 链接
     *
     * @return {@link Connection}
     * @throws SQLException sqlexception异常
     */
    Connection getConnection() throws SQLException;

    /**
     * 提交
     *
     * @throws SQLException sqlexception异常
     */
    void commit() throws SQLException;

    /**
     * 回滚
     *
     * @throws SQLException sqlexception异常
     */
    void rollback() throws SQLException;

    /**
     * 关闭
     *
     * @throws SQLException sqlexception异常
     */
    void close() throws SQLException;
}
